#include <iostream>
#include <cstdio>
#include <algorithm>
#include <string>
#include <cstring>
#include <cstdlib>
#include <math.h>
#include <stack>
#include <queue>
#include <string.h>
using namespace std;
typedef struct
{
    int x, y, z;
    int arr[10][10]; // 定义地图
} weizhi;
int main()
{
    int a[10][10], i, j, dis[4][2] = {{1, 0}, {-1, 0}, {0, 1}, {0, -1}};
    for (i = 0; i < 5; i++)
    {
        for (j = 0; j < 5; j++)
        {
            cin >> a[i][j];
        }
    }
    queue<weizhi> s;
    weizhi start;
    start.x = 0, start.y = 0;
    memset(start.arr, 0, sizeof(start.arr));
    start.arr[start.x][start.y] = 6;
    s.push(start);
    while (s.size())
    {
        weizhi b = s.front(), d;
        memset(d.arr, 0, sizeof(d.arr));
        s.pop();
        if (b.x == 4 && b.y == 4)
        {
            for (i = 0; i < 5; i++)
            {
                for (j = 0; j < 5; j++)
                {
                    if (b.arr[i][j] == 6)
                    {
                        printf("(%d, %d)\n", i, j);
                    }
                }
            }
            break;
        }
        for (i = 0; i < 4; i++)
        {
            d.x = b.x + dis[i][0];
            d.y = b.y + dis[i][1];
            if (d.x >= 0 && d.x < 5 && d.y >= 0 && d.y < 5 && a[d.x][d.y] == 0)
            {
                a[b.x][b.y] = 1;
                for (int k = 0; k < 5; k++)
                {
                    for (int t = 0; t < 5; t++)
                    {
                        d.arr[k][t] = b.arr[k][t];
                    }
                }
                d.arr[d.x][d.y] = 6; // 先复制地图，再把走过的点存入新数组
                s.push(d);
            }
        }
    }
}